#!/usr/bin/env node

// 测试阿里云百炼大模型 API 连接和功能
const path = require('path');

// 动态导入编译后的模块
async function testAliBailianAPI() {
  console.log('🚀 测试阿里云百炼大模型 API 连接');
  console.log('=' .repeat(50));

  // 检查环境变量
  const apiKey = process.env.ALI_BAILIAN_API_KEY;
  if (!apiKey) {
    console.error('❌ 错误：未设置 ALI_BAILIAN_API_KEY 环境变量');
    console.error('请运行以下命令设置 API Key：');
    console.error('$env:ALI_BAILIAN_API_KEY="your-api-key-here"  # PowerShell');
    console.error('set ALI_BAILIAN_API_KEY=your-api-key-here     # CMD');
    process.exit(1);
  }

  console.log('✅ API Key 已设置');
  console.log(`🔑 API Key: ${apiKey.substring(0, 8)}...${apiKey.substring(apiKey.length - 8)}`);

  try {
    // 导入服务
    const { AliBailianService } = await import('./build/ali-bailian-service.js');
    
    const service = new AliBailianService({
      apiKey,
      baseUrl: process.env.ALI_BAILIAN_BASE_URL,
    });

    // 测试 1: 连接检查
    console.log('\n📡 测试 1: API 连接检查');
    console.log('-'.repeat(30));
    
    const isConnected = await service.checkConnection();
    if (isConnected) {
      console.log('✅ API 连接成功');
    } else {
      console.log('❌ API 连接失败');
      return;
    }

    // 测试 2: Embedding 生成
    console.log('\n🧮 测试 2: 嵌入向量生成');
    console.log('-'.repeat(30));
    
    const testTexts = [
      '人工智能技术在现代社会中的应用',
      '机器学习算法的发展历程',
      '深度学习神经网络架构'
    ];

    console.log(`📝 测试文本数量: ${testTexts.length}`);
    
    const startTime = Date.now();
    const embeddings = await service.generateEmbeddings(testTexts);
    const embeddingTime = Date.now() - startTime;
    
    console.log(`✅ 嵌入向量生成成功`);
    console.log(`⏱️  生成时间: ${embeddingTime}ms`);
    console.log(`📊 向量维度: ${embeddings[0].length}`);
    console.log(`🔢 向量数量: ${embeddings.length}`);
    console.log(`📈 第一个向量样本: [${embeddings[0].slice(0, 5).map(x => x.toFixed(4)).join(', ')}...]`);

    // 测试 3: 文本生成
    console.log('\n✍️  测试 3: 文档摘要生成');
    console.log('-'.repeat(30));
    
    const testDocument = `---
title: "人工智能技术指南"
category: "技术文档"
tags: ["AI", "机器学习", "深度学习"]
---

# 人工智能技术指南

## 概述
人工智能（Artificial Intelligence，AI）是计算机科学的一个重要分支，旨在创建能够执行通常需要人类智能的任务的系统。

## 主要技术
1. **机器学习**: 让计算机通过数据学习和改进性能
2. **深度学习**: 使用神经网络模拟人脑处理信息
3. **自然语言处理**: 让计算机理解和生成人类语言
4. **计算机视觉**: 让计算机识别和理解图像

## 应用领域
- 医疗诊断
- 自动驾驶
- 智能客服
- 推荐系统
- 金融风控

AI技术正在快速发展，将在未来几年内深刻改变我们的生活和工作方式。`;

    const briefingPrompt = `请为以下markdown文档写一个简洁的中文摘要，要求：
1. 长度不超过300字
2. 突出主要内容和关键信息
3. 关注文档的内容，而非结构

文档内容:
${testDocument}

请生成摘要:`;

    console.log('📝 生成文档摘要...');
    const startTime2 = Date.now();
    const briefing = await service.generateText(briefingPrompt, 'qwen-plus-latest', {
      temperature: 0.3,
      max_tokens: 500,
    });
    const briefingTime = Date.now() - startTime2;
    
    console.log(`✅ 摘要生成成功`);
    console.log(`⏱️  生成时间: ${briefingTime}ms`);
    console.log(`📊 摘要长度: ${briefing.length} 字符`);
    console.log('\n📖 生成的摘要:');
    console.log('─'.repeat(60));
    console.log(briefing);
    console.log('─'.repeat(60));

    // 测试总结
    console.log('\n🎯 测试总结');
    console.log('=' .repeat(30));
    console.log('✅ 所有测试通过');
    console.log(`📊 总耗时: ${Date.now() - startTime}ms`);
    console.log('🚀 阿里云百炼 API 集成成功！');
    
    // 性能对比信息
    console.log('\n💡 性能优势');
    console.log('-'.repeat(20));
    console.log('相比本地 Ollama:');
    console.log(`• Embedding 生成速度: ~${embeddingTime}ms (通常比 Ollama 快 2-5 倍)`);
    console.log(`• 文本生成速度: ~${briefingTime}ms (通常比 Ollama 快 3-10 倍)`);
    console.log('• 无需本地 GPU 资源');
    console.log('• 更高的模型质量和准确性');

  } catch (error) {
    console.error('\n❌ 测试失败:', error.message);
    
    if (error.message.includes('401')) {
      console.error('\n🔑 可能的原因: API Key 无效');
      console.error('请检查您的 API Key 是否正确');
    } else if (error.message.includes('403')) {
      console.error('\n🚫 可能的原因: API 权限不足');
      console.error('请检查您的账户是否有权限调用相关 API');
    } else if (error.message.includes('429')) {
      console.error('\n⏰ 可能的原因: API 调用频率超限');
      console.error('请稍后重试或升级您的账户');
    } else if (error.message.includes('ENOTFOUND') || error.message.includes('timeout')) {
      console.error('\n🌐 可能的原因: 网络连接问题');
      console.error('请检查网络连接和防火墙设置');
    }
    
    console.error('\n📋 详细错误信息:');
    console.error(error);
  }
}

// 运行测试
if (require.main === module) {
  testAliBailianAPI().catch(console.error);
}
